import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import { resolve } from 'path'
import { visualizer } from 'rollup-plugin-visualizer'; // 可选，用于生成包大小分析报告

export default defineConfig({
  plugins: [
    vue({
      // 把单文件组件中的样式，插入到html中的style标签
      css: true,
      // 把组件转换成 render 函数
      compileTemplate: true,
    }),
    vueJsx(),
    visualizer({ // 可视化包分析，非必需
      // open: true,
      // gzipSize: true,
      // brotliSize: true
    })

  ],
  resolve: {
    alias: {
      // '@': resolve('src'),
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      extensions: ['.js', '.mts', '.vue', '.json', '.ts', 'png', 'tsx', 'jsx'] 
    }
  },
  build: {
    outDir:'dist',
    emptyOutDir:true,
    target: 'esnext', // 或其他目标，取决于你的兼容性需求
    minify: 'terser', // Vite内部支持terser，无需单独引入插件
    lib: {
      entry: 'install.js', // 你的库入口文件
      name: 'DraggingFoldingPanels', // 库导出的全局变量名
       fileName: 'DraggingFoldingPanels'
      //  fileName: (format) => `DraggingFoldingPanels.${format}.js`
    },
    rollupOptions: {
      external: ['vue'], // 外部依赖声明
      output: {
        globals: {
          vue: 'Vue', // 全局变量映射
        },
      },
    },
  }
})


